package thread;


/**
 * 线程的生命周期
 */
public class ThreadState {

    public static void main(String[] args) throws InterruptedException {

        /*
            New 尚未启动的线程处于此状态 (new)
            Runnable 在 java 虚拟机 中 执行的线程处于此状态(start())
            Blocked 被阻塞等待监视器锁定的线程处于此状态(等待进入同步代码块的锁)
            Waiting 正在等待另一个线程执行特定动作的线程处于此状态 (join)
            Timed_Waiting 正在等待另一个线程执行动作达到指定等待时间的线程处于此状态(sleep)
            Terminated 已退出的线程处于此状态
         */
        TT tt = new TT();
        System.out.println(tt.getName() + " 状态：" + tt.getState());
        tt.start();
        while (Thread.State.TERMINATED != tt.getState()) {
            System.out.println(tt.getName() + " 状态：" + tt.getState());
            Thread.sleep(500);
        }
        System.out.println(tt.getName() + " 状态：" + tt.getState());
    }
}

class TT extends Thread {

    @Override
    public void run() {

        while(true) {
            for (int i = 0; i < 10; i++) {
                System.out.println("hi " + i);
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            break;
        }
    }
}